treeview: Lower the duration of validation iterations
authorBastien Nocera <hadess@hadess.net>
Sat, 22 Mar 2014 11:47:55 +0000 (12:47 +0100)
committerBastien Nocera <hadess@hadess.net>
Thu, 27 Mar 2014 12:02:43 +0000 (13:02 +0100)
GTK_TREE_VIEW_TIME_MS_PER_IDLE is currently 30 milliseconds, meaning
that validate_rows will validate rows up until all the validations have
taken over 30 msecs. So it's likely to block redrawing via the clock
frame update mechanism, as that tops at 16.66 milliseconds per frame
(1/60th of a second).

Stop validating rows if we've spent more than 3/5 of our allotted budget
for inter-frame processing, so as to avoid blocking.

In the future, we would probably want to calculate how long we would
have left until the next frame, especially if higher priority idles
and timeouts have already consumed a portion of that allotted time.

https://bugzilla.gnome.org/show_bug.cgi?id=726871

gtk/gtktreeview.c

index 9bec668fd826b1341dad9c8ad57ecf53aec0a68b..e31b867f0e2f9f70a12d787430b9887b0804edce 100644 (file)
@@ -224,7 +224,8 @@ typedef enum {
 
 #define GTK_TREE_VIEW_PRIORITY_VALIDATE (GDK_PRIORITY_REDRAW + 5)
 #define GTK_TREE_VIEW_PRIORITY_SCROLL_SYNC (GTK_TREE_VIEW_PRIORITY_VALIDATE + 2)
-#define GTK_TREE_VIEW_TIME_MS_PER_IDLE 30
+/* 3/5 of gdkframeclockidle.c's FRAME_INTERVAL (16667 microsecs) */
+#define GTK_TREE_VIEW_TIME_MS_PER_IDLE 10
 #define SCROLL_EDGE_SIZE 15
 #define GTK_TREE_VIEW_SEARCH_DIALOG_TIMEOUT 5000
 #define AUTO_EXPAND_TIMEOUT 500